-
-
Notifications
You must be signed in to change notification settings - Fork 212
[STM32H7] Provisioning fs reformat #957
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[STM32H7] Provisioning fs reformat #957
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no need to erase the whole flash before repartitioning; you only need to erase the MBR.
root.init();
root.erase(0x0, root.get_erase_size());
Furthermore if you keep the KVstorage in partition 3 for both schemes you should be able switch between them without erase the MBR at all
mbed::MBRBlockDevice::partition(&root, 1, 0x0B, 0, 1024 * 1024);
if(default_scheme) {
mbed::MBRBlockDevice::partition(&root, 4, 0x0B, 14 * 1024 * 1024, 14 * 1024 * 1024);
mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 13 * 1024 * 1024, 14 * 1024 * 1024);
mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 13 * 1024 * 1024);
// use space from 15.5MB to 16 MB for another fw, memory mapped
} else {
mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 6 * 1024 * 1024);
mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 6 * 1024 * 1024, 7 * 1024 * 1024);
mbed::MBRBlockDevice::partition(&root, 4, 0x0B, 7 * 1024 * 1024, 14 * 1024 * 1024);
// use space from 15.5MB to 16 MB for another fw, memory mapped
}
I tried switching from this scheme to the older one and something bad happened and the only way to make it work properly was to erase the partitions. I am double checking this. |
I confirm that without the MBR erase I cannot use the old partitioning scheme. |
0416f6b
to
9400dab
Compare
1d22ce2
to
6a309b7
Compare
What do you think about the way I wrote the MBR table clean?
Now partition 3 is being used for user data, this would mean that we need either to switch user data partition to 4, or distinguish between the two cases when using kvstore. I prefer to keep it to partition number 4. |
6a309b7
to
392cc64
Compare
@andreagilardoni @pennam Hi, a couple of us have tried, unsuccessfully, to scrub the MBR in order to change the partition layout. Detail here https://forum.arduino.cc/t/how-to-partition-giga-flash-similar-to-original-factory-defaults/1349759. I'm sure we were doing something wrong but it may be worth double-double-checking that the erase in this commit is doing what's expected. |
I would like to point out that when repartitioning, for the user or ota block devices some files can be corrupted if they lie in the area that will be used for partition 4. |
41d9a90
to
9e05f2b
Compare
Changing flash partitioning scheme in order to make room for a KV store